在MATPLOTLIB中加入汉字显示 您所在的位置:网站首页 matplotlib 图名 在MATPLOTLIB中加入汉字显示

在MATPLOTLIB中加入汉字显示

2023-09-02 14:47| 来源: 网络整理| 查看: 265

简 介: 使用Pyhthon中的MATLABLIB是绘制科学结果的主要的工具。如何在绘制图中加入汉字显示,是实际应用中具有重要的需要。本文给出如何在MATLABLIB绘制图片中的增加汉字显示的几种重要的方法。 关键词: Python,Matplotlib,汉字

 

■ 背景

由于经常需要使用python:matplotlib来绘制数据图像,显示汉字可以比较直观有效的传达信息。在通常情况下,直接使用matplotlib是无法显示汉字。往往会在显示的汉字的地方使用方框来显示。

▲ 通常情况下无法正确的显示汉字

▲ 通常情况下无法正确的显示汉字

在 Python实现matplotlib显示中文方法详解 中给出了四种显示中文的方法。下面为使用其中方法二,在显示xlabel, ylabel,title中使用了汉字显示的结果。

▲ 使用fontproperties属性设置xlabel

▲ 使用fontproperties属性设置xlabel

下面分别介绍这四种方法实验的结果。

 

01测试不同的显示汉字方法 1.使用fontproperties

在xlabel, ylabel, title后面使用fontproperties来指明所使用的字体的名称。

import matplotlib.pyplot as plt # ... plt.xlabel("x轴") plt.ylabel("y轴", fontproperties="SimSun") # 步骤一 (宋体) plt.title("标题", fontproperties="SimHei") # (黑体) plt.show()

下面表格给出了中文字体对应的英文名称。通过测试,并不是每一个英文字体都是可以使用的。

表格1:中文字体与对应的英文名称

中文字体英文名称英文可用?.ttf可用?宋体SimSun不可以不可以黑体SimHei可以可以微软雅黑Microsoft YaHei可以不可以微软正黑体Microsoft JhengHei可以不可以新宋体NSimSun不可以不可以新细明体PMingLiU不可以不可以细明体MingLiU不可以不可以标楷体DFKai-SB不可以不可以仿宋FangSong可以不可以楷体KaiTi可以不可以隶书LiSu可以不可以幼圆YouYuan可以不可以华文细黑STXihei可以可以华文楷体STKaiti可以可以华文宋体STSong可以可以华文中宋STZhongsong可以不可以华文仿宋STFangsong可以不可以方正舒体FZShuTi可以不可以方正姚体FZYaoti可以不可以华文彩云STCaiyun可以可以华文琥珀STHupo可以可以华文隶书STLiti可以可以华文行楷STXingkai可以不可以华文新魏STXinwei可以不可以 2.使用font

使用font设置,可以设置字体的大小。可以使用的ttf文件及其名称参见表格1的信息。

font = FontProperties(fname=r'c:\windows\fonts\STKaiti.ttf', size=12) plt.xlabel("时间(秒)", fontproperties=font) plt.ylabel("函数值(X)", fontproperties=font) plt.title('显示sin,cos曲线', fontproperties=font)

▲ 使用STSong显示的size=16的情况

▲ 使用STSong显示的size=16的情况

3.使用rcParams参数 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # Solve the minus sign problems plt.plot(t, sindata, label='sin(x)正弦') plt.plot(t, cosdata, label='cos(x^2)余弦') plt.xlabel("时间(秒)") plt.ylabel("函数值(X)") plt.title('显示sin,cos曲线')

▲ 使用rcParams显示汉字。注意:Legend也能够显示汉字

▲ 使用rcParams显示汉字。注意:Legend也能够显示汉字

4.使用rc参数

使用rc参数可以设定更多的font的参数。比如下面测示例,可以设定字体(font)、加黑(weight), 尺寸(size)。

ont = {'family':'SimHei', 'weight':'bold', 'size':'12'} plt.rc('font', **font) plt.rc('axes', unicode_minus=False) plt.plot(t, sindata, label='sin(x)正弦') plt.plot(t, cosdata, label='cos(x^2)余弦') plt.xlabel("时间(秒)") plt.ylabel("函数值(X)") plt.title('显示sin,cos曲线')

▲ 使用rc设定参数

▲ 使用rc设定参数

 

02总结 方式二用时才设置,且不会污染全局字体设置,更灵活方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

■ 相关文献链接:

Python实现matplotlib显示中文方法详解 #!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # TEST1.PY -- by Dr. ZhuoQing 2020-08-29 # # Note: #============================================================ from headm import * from matplotlib.font_manager import FontProperties t = linspace(0, 10, 400) sindata = sin(t) cosdata = cos(t**2) #font = FontProperties(fname=r'c:\windows\fonts\STSong.ttf', size=16) #plt.rcParams['font.sans-serif'] = ['SimHei'] #plt.rcParams['axes.unicode_minus'] = False # Solve the minus sign problems font = {'family':'SimHei', 'weight':'bold', 'size':'12'} plt.rc('font', **font) plt.rc('axes', unicode_minus=False) plt.plot(t, sindata, label='sin(x)正弦') plt.plot(t, cosdata, label='cos(x^2)余弦') plt.xlabel("时间(秒)") plt.ylabel("函数值(X)") plt.title('显示sin,cos曲线') #plt.xlabel("时间(秒)", fontproperties=font) #plt.ylabel("函数值(X)", fontproperties=font) #plt.title('显示sin,cos曲线', fontproperties=font) plt.grid(True) plt.tight_layout() plt.legend(loc='upper right') plt.show() #------------------------------------------------------------ # END OF FILE : TEST1.PY #============================================================


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有